package com.boost.tjvm.gc;

/**
 * 新生代 minor gc
 */
public class MinorGc {

    private static final int _1mb = 1024 * 1024;


    /**
     * vm 参数：
     * -verbose:gc -XX:+UseConcMarkSweepGC -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8
     * 以上参数：java heap 内存为20M,  年轻代为10M, eden和survivor比例是8:1 所以 eden : 8192k ,survivor 中 from 和to 比例为1:1
     * 所以 from 为 1024 ，to 1024
     *
     * 这次allocation4 分配空间是发生了MinorGc
     * 原因：
     * allocation1, allocation2, allocation3, 在eden中占用了6M内存，分配allocation4的4兆内存时候发现eden满了，所以做一次MinorGc
     * ，MinorGc时发现 3 个两M 内存全部无法放到 survivor 空间，所以只有通过分配担保机制放入到老年代。
     *
     */

    public static void testAllocation() {
        byte[] allocation1, allocation2, allocation3, allocation4;
        allocation1 = new byte[2 * _1mb];
        allocation2 = new byte[2 * _1mb];
        allocation3 = new byte[2 * _1mb];
        allocation4 = new byte[4 * _1mb]; //出现一次Minor gc
    }


    public static void main(String[] args) {
        testAllocation();
    }

}
